package rmaqlc31.basic;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class _03HelloServlet implements Servlet{
	
	// 일반적으로 자바 클래스는 웹에서 실행 불가
	// 하지만, servlet 인터페이스를 구현한 클래스는 실행 가능
	// Servlet 인터페이스 구형시 [서블릿 관련 메서드를 재정의]해야 함
	
	// javax.servlet.Servlet : 서블릿 핵심 기술을 인터페이스로 작성
	
	// 반드시 재정의 해야 하는 5가지 메서드
	// init
	// service
	// getServletConfig
	// destroy
	// getServletInfo

	@Override
	public void destroy() {
		// 서블릿 쓰레드가 컨테이너로 부터 제거될때 호출
		System.out.println("destory 호출!");
	}

	@Override
	public ServletConfig getServletConfig() {
		// 서블릿 쓰레드 생성시 필요한 설정 작업을 처리하는 메서드
		return null;
	}

	@Override
	public String getServletInfo() {
		// 서블릿 정보를 출력하는 메서드
		return null;
	}

	@Override
	public void init(ServletConfig cfg) throws ServletException {
		// 서블릿 쓰레드 생성시 초기화 작업을 당담하는 메서드
		System.out.println("init 호출!!");
	}

	@Override
	public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException {
		// 서블릿의 실행 진입점 : 시작은 여기서 부터!
		System.out.println("service 호출!!");
		
		// 클라이언트로 응답하기 위해 출력 스트림 지정
		res.setContentType("text/html; charset=UTF-8");
		PrintWriter out = res.getWriter();
		
		// 간단한 html 내용 출력
		out.print("<html><head></head>");
		out.print("<body><h1>Hello, Servlet Interface!!</h1>");
		out.print("</body></html>");
		
	}

}
